package com.creali.web.dao;

import java.io.Serializable;
import java.util.List;

public interface GenericHibernateDaoI<T, PK extends Serializable> {

	/**
	 * 获取所有持久对象，类似查询表中所有记录
	 */
	public List<T> getAll();

	/**
	 * 获取指定标识符的持久对象，出错则抛出相应的运行时异常
	 */
	public T get(PK id);

	/**
	 * 保存持久对象，包括更新和更新操作
	 */
	public void save(T entity);

	/**
	 * 删除给定的持久对象
	 * 
	 * @param entity
	 *            给定的持久对象
	 */
	public void deleteGivenPersistentClass(T entity);

	/**
	 * 删除指定对象标识符的持久对象
	 */
	public void deleteByUserId(PK id);

	/**
	 * 根据实体属性返回对应实体
	 * 
	 * @param entityName
	 *            实体名
	 * @param propertyName
	 *            属性名
	 * @param propertyValue
	 *            属性值
	 * @return
	 */
	public List<T> findByProperty(String entityName, String propertyName,
			Object propertyValue);
}